#pragma once

#include <vector>
#include <vsomeip/vsomeip.hpp>
#include "someip/someip_structs.h"

namespace ecarx::transfer::someip {

struct event_info{
    vsomeip::eventgroup_t eventgroup_id;
    std::vector<vsomeip::event_t> event_ids;
};

struct service_info {
    vsomeip::service_t service_id;
    std::vector<event_info> events;
    
};

//作为服务端需要发布的服务以及event事件
const std::vector<service_info> offer_service_infos = {

};

// client to service订阅的事件信息
const std::vector<service_info> request_event_infos = {

    {
        .service_id=ADCU_HMI_SERVICE_ID,
        .events={

            {
                .eventgroup_id=EventGroup_EG_ADSetting,
                .event_ids={
                    SettingDrivingInfoInfEvent,
				SettingAEBInfoInfEvent,
				SettingLKAInfoInfEvent,
				SettingFCTAInfoInfEvent,
				SettingRCTAInfoInfEvent,
				SettingDOWInfoInfEvent,
				SettingBSDInfoInfEvent,
				SettingTSIInfoInfEvent,
				SettingSRVInfoInfEvent,
				SettingEMAInfoInfEvent,
				SettingTLAInfoInfEvent,
				SettingCMSRInfoInfEvent,
				SettingVoiceWarningInfoInfEvent,
				SettingAPAInfoInfEvent,
				SettingRPAInfoInfEvent,
				SettingLPInfoInfEvent,
				SelectedSlotIdInfEvent,
				AlignedSpeedSettingInfEvent,
				PebSwitchSettingInfEvent,
				LaneFunctionEvent,
				AbsoluteLocalizationInfEvent,
				SettingSGWInfoInfEvent,
				SettingCheckInfEvent,
				APAnobtntriSwitchInfEvent,
				SettingRCTBInfoInfEvent,
				AccfushSwitchTypeEvent,
				DispTSIInfoForLgtCtrlSeNEvent,
				BigdataSpdLimSwitchInfEvent,
				SettingAEBFCWInfoInfEvent,
				SettingRCTABInfoInfEvent
                }
            }
,
            {
                .eventgroup_id=EventGroup_EG_ADHmi,
                .event_ids={
                    AlarmInfoInfEvent,
				FaultListInfoInfEvent,
				FeatureStateInfEvent,
				HighDefinitionMapInfEvent,
				PercepFusionObjsInfEvent,
				PerceptionAPASlotsInfEvent,
				PercepTrafficLightsInfEvent,
				PlanningTrajectoryInfEvent,
				RelativeLocalizationInfEvent,
				ALCAstateInfEvent,
				TSISpeedLimitUnitIconSeNEvent,
				APAparkinfoInfEvent
                }
            }

        }
    }

};

} // namespace ecarx::net::someip
